import os
import shutil
import json

def extract_images():
    # 定义目录路径
    source_dir = 'image/catalog/product'
    result_dir = 'result'
    
    # 确保result目录存在
    if not os.path.exists(result_dir):
        os.makedirs(result_dir)
    
    # 用于存储映射关系
    mapping = {}
    counter = 1
    
    # 遍历源目录
    for root, dirs, files in os.walk(source_dir):
        # 跳过result目录
        if 'result' in dirs:
            dirs.remove('result')
            
        for file in files:
            # 检查是否为图片文件
            if file.lower().endswith(('.png', '.jpg', '.jpeg', '.gif')):
                # 源文件的完整路径
                source_path = os.path.join(root, file)
                # 获取文件扩展名
                ext = os.path.splitext(file)[1]
                # 新文件名
                new_filename = f"{counter}{ext}"
                # 目标路径
                target_path = os.path.join(result_dir, new_filename)
                
                # 复制文件
                shutil.copy2(source_path, target_path)
                
                # 保存映射关系（使用相对路径）
                relative_path = os.path.relpath(source_path, source_dir)
                mapping[new_filename] = relative_path
                
                print(f"已复制: {relative_path} -> {new_filename}")
                counter += 1
    
    # 保存映射文件
    mapping_file = os.path.join(result_dir, 'mapping.json')
    with open(mapping_file, 'w', encoding='utf-8') as f:
        json.dump(mapping, f, ensure_ascii=False, indent=2)
    
    print(f"\n完成! 共处理了 {counter-1} 个图片文件")
    print(f"映射文件保存在: {mapping_file}")

if __name__ == '__main__':
    extract_images()
